#include <REGX52.H>

//距离小于10cm,D5亮，D6灭，反之相反


sbit D5 = P3^7;//设备变量led1指向P3组IO口的第7口
sbit D6 = P3^6;//设备变量led2指向P3组IO口的第6口

sbit Trig = P1^5;//超声波模块trig口接P1组IO口第5口
sbit Echo = P1^6;//超声波模块trig口接P1组IO口第6口

void Timer0Init(void){

	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x00;		//设置定时初值
	TH0 = 0x00;	//设置定时初值
	TF0 = 0;
}

void Delay10us()		//@11.0592MHz
{
	unsigned char i;

	i = 2;
	while (--i);
}


int main(){
	
	double time = 0;
	double dis  = 0;
	//初始化定时器
	Timer0Init(); 
	
	while(1){
	
	
	
	  
	
	//给trig高电平持续10us；
	Trig = 0;
	Trig = 1;       
	Delay10us();
	Trig = 0;
	
	//检测发送接收信号时间
	while(Echo == 0);
	TR0 = 1;
	while(Echo == 1);
	TR0 = 0;
	
	// 计算时间高位左移8位即2^8=256
	time = (TH0 * 256 + TL0) * 1.085; //记一位耗时1.085us； 
	
	//计算距离声速（340m/s）* 时间 除以2（往返走过两次距离）
	dis = 0.034 * time/2;
	
	//表现结果
	if(dis < 10){
		D5 = 1;
		D6 = 0;
	}else{
		D5 = 0;
		D6 = 1;
	}
	
	TL0 = 0x00;		//设置定时初值
	TH0 = 0x00;	//设置定时初值
}	
}